// 用户认证相关工具函数
const common = require('./common.js')

/**
 * 检查用户是否登录（预留接口调用位置）
 * @returns {Promise<boolean>} 是否已登录
 */
function checkLogin() {
  return new Promise((resolve, reject) => {
    // TODO: 调用后端接口验证登录状态
    // wx.request({
    //   url: `${getApp().globalData.apiBaseUrl}/api/user/checkLogin`,
    //   method: 'GET',
    //   success: (res) => {
    //     if (res.data.code === 200 && res.data.data.isLogin) {
    //       // 更新全局登录状态和用户信息
    //       getApp().globalData.isLogin = true
    //       getApp().globalData.userInfo = res.data.data.userInfo
    //       resolve(true)
    //     } else {
    //       getApp().globalData.isLogin = false
    //       resolve(false)
    //     }
    //   },
    //   fail: (err) => {
    //     console.error('检查登录状态失败:', err)
    //     reject(err)
    //   }
    // })
    
    // 临时实现：从缓存中获取登录状态
    const userInfo = common.getStorage('userInfo')
    const token = common.getStorage('token')
    
    // if (userInfo && token) {
    //   getApp().globalData.isLogin = true
    //   getApp().globalData.userInfo = userInfo
    //   resolve(true)
    // } else {
    //   getApp().globalData.isLogin = false
    //   resolve(false)
    // }

    // 临时默认登录
    getApp().globalData.isLogin = true
    getApp().globalData.userInfo = userInfo
    resolve(true)
  })
}

/**
 * 提示用户登录
 * @param {string} message - 提示消息
 * @returns {Promise<boolean>} 用户是否选择去登录
 */
function promptLogin(message = '请先登录后才能继续操作') {
  return new Promise((resolve) => {
    wx.showModal({
      title: '需要登录',
      content: message,
      confirmText: '去登录',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          // 跳转到登录页面或个人中心
          wx.switchTab({
            url: '/pages/my/my',
            success: () => {
              resolve(true)
            },
            fail: () => {
              resolve(false)
            }
          })
        } else {
          resolve(false)
        }
      }
    })
  })
}

/**
 * 执行需要登录的操作
 * @param {Function} callback - 登录后执行的回调函数
 */
async function requireLogin(callback) {
  const isLogin = await checkLogin()
  
  if (isLogin) {
    // 已登录，直接执行回调
    if (typeof callback === 'function') {
      callback()
    }
    return true
  } else {
    // 未登录，提示用户登录
    await promptLogin()
    return false
  }
}

/**
 * 用户登录（预留接口调用位置）
 * @param {Object} loginData - 登录数据
 * @returns {Promise} 登录结果
 */
function login(loginData) {
  return new Promise((resolve, reject) => {
    wx.showLoading({ title: '登录中...' })
    
    // TODO: 调用后端登录接口
    // wx.request({
    //   url: `${getApp().globalData.apiBaseUrl}/api/user/login`,
    //   method: 'POST',
    //   data: loginData,
    //   success: (res) => {
    //     wx.hideLoading()
    //     if (res.data.code === 200) {
    //       // 保存登录信息
    //       const { token, userInfo } = res.data.data
    //       common.setStorage('token', token)
    //       common.setStorage('userInfo', userInfo)
    //       getApp().globalData.isLogin = true
    //       getApp().globalData.userInfo = userInfo
    //       
    //       wx.showToast({
    //         title: '登录成功',
    //         icon: 'success'
    //       })
    //       resolve(userInfo)
    //     } else {
    //       wx.showToast({
    //         title: res.data.message || '登录失败',
    //         icon: 'none'
    //       })
    //       reject(new Error(res.data.message))
    //     }
    //   },
    //   fail: (err) => {
    //     wx.hideLoading()
    //     console.error('登录失败:', err)
    //     wx.showToast({
    //       title: '登录失败，请重试',
    //       icon: 'none'
    //     })
    //     reject(err)
    //   }
    // })
    
    // 临时实现：模拟登录
    setTimeout(() => {
      wx.hideLoading()
      const userInfo = {
        name: '测试用户',
        phone: '13800138000',
        avatar: '',
        ...loginData
      }
      common.setStorage('token', 'mock_token_' + Date.now())
      common.setStorage('userInfo', userInfo)
      getApp().globalData.isLogin = true
      getApp().globalData.userInfo = userInfo
      
      wx.showToast({
        title: '登录成功',
        icon: 'success'
      })
      resolve(userInfo)
    }, 1000)
  })
}

/**
 * 用户退出登录
 */
function logout() {
  // TODO: 调用后端接口退出登录
  // wx.request({
  //   url: `${getApp().globalData.apiBaseUrl}/api/user/logout`,
  //   method: 'POST',
  //   success: (res) => {
  //     if (res.data.code === 200) {
  //       // 清除本地数据
  //       common.removeStorage('token')
  //       common.removeStorage('userInfo')
  //       getApp().globalData.isLogin = false
  //       getApp().globalData.userInfo = null
  //       
  //       wx.showToast({
  //         title: '退出成功',
  //         icon: 'success'
  //       })
  //     }
  //   }
  // })
  
  // 临时实现
  common.removeStorage('token')
  common.removeStorage('userInfo')
  getApp().globalData.isLogin = false
  getApp().globalData.userInfo = null
  
  wx.showToast({
    title: '退出成功',
    icon: 'success'
  })
}

module.exports = {
  checkLogin,
  promptLogin,
  requireLogin,
  login,
  logout
}

